import { computed, ref } from "vue";
import { defineStore } from "../pinia";
import { useOtherStore } from "./useOtherStore";

// 二、组合式store
export const useStore = defineStore("counter", () => {
  // 组合式store中可以直接获取其他store

  // const otherStore = useOtherStore();
  // console.log("获取其他store", otherStore.list);

  const count = ref(0);
  const double = computed(() => {
    return count.value * 2;
  });
  function increment(num) {
    count.value += num;
  }
  return {
    count,
    double,
    increment,
  };
});

// 一、选项式store，只能在页面中调用？？
// export const useStore = defineStore("counter", {
//   state: () => ({
//     count: 0,
//   }),
//   getters: {
//     double() {
//       return this.count * 2;
//     },
//   },
//   actions: {
//     increment(num) {
//       // 选项式store中不能直接获取其他store，getCurrentInstance()获取为null
//       // 但是可以通过activePinia获取
//       // const otherStore = useOtherStore();
//       // console.log("获取其他store", otherStore.list);
//       this.count += num;
//     },
//   },
// });

// 场景： vue3+pinia中，http.js文件需要通过userStore里面的信息传token这些信息，在http.js中可以直接调用userStore()
// 因为pinia.js中会使用一个全局的activePinia来保存pinia，如果使用时没有上下问，无法通过getCurrentInstance()获取，则直接使用这个activePinia
